package mysql

import (
	"gorm.io/gorm"
	"newgoods/goodsrpc/goodsrpc"
)

type Goods struct {
	gorm.Model
	GoodsName  string  `gorm:"type:varchar(30);not null;comment:'商品名称'"`
	GoodsPrice float64 `gorm:"type:decimal(10,2);not null;comment:'商品价格'"`
	Stock      int64   `gorm:"type:int(11);not null;comment:'商品库存'"`
	Image      string  `gorm:"type:varchar(255);not null; comment:'商品图片'"`
	ClassId    int64   `gorm:"type:int(11);not null;comment:'分类id'"`
}

func (g *Goods) GoodsAdd(db *gorm.DB) error {
	return db.Debug().Create(g).Error
}

func (g *Goods) FindGoodsByName(db *gorm.DB, name string) error {
	return db.Debug().Where("goods_name=?", name).First(g).Error
}

func GoodsList(db *gorm.DB) ([]*goodsrpc.GoodsList, error) {
	var list []*goodsrpc.GoodsList

	err2 := db.Debug().Model(&Goods{}).Joins("LEFT JOIN classes ON goods.class_id=classes.id").
		Select(
			"goods.id as goods_id",
			"goods.goods_name",
			"goods.goods_price",
			"goods.stock",
			"goods.image",
			"classes.class_name",
			"goods.created_at",
		).Find(&list).Error
	return list, err2
}
